-1

我有一个类,其中包含一个具有两个参数的方法。我使用属性来设置这些参数的值,但我不知道如何将它们传递给方法。类名是 ZipLoad。

    private string user1;
    private string pass1;

    public string setUser
    {
        set { user1 = value ; }
    }
    public string setPass
    {
        set { pass1 = value; }
    }

    private void DOit(string uName, string pWord)
    {
      Do some stuff...
    }

我有这个代码来初始化它和所有......

    ZipLoad myZipLoad = new ZipLoad();
    myZipLoad.setUser = "abc";  // can be anything !
    myZipLoad.setUser = "abc123";

接下来我该怎么做才能使用该方法?

谢谢你。

4

7 回答 7

3

这个怎么样:

public ZipLoad(string uName,string pWord)
{
user1= uName;
pass1=pWord;
DOit(uName,pWord);
}
private string user1;
private string pass1;

private void DOit(string uName, string pWord)
{
  Do some stuff...
}

然后你可以通过

ZipLoad myZipLoad = new ZipLoad("name","pw");
于 2013-04-30T09:55:06.693 回答
1

方法不是很清楚DOit,但如果它在里面ZipLoad,你可以只使用字段,考虑到属性只有set,出于某种原因。

所以:

public class ZipLoad  {
 .... 
    private void DOit(string uName, string pWord)
    {
      Do some stuff...
    }

    //someone calls it 
    DOit(user1 , pass1);
 ....
}

但我会做的是在内部也使用属性,所以像这样定义它们:

public string setUser
{        
    get {return user1}
}
public string setPass
{
    get{ returnpass1 ; }
}

并从类的 ctor 设置字段的值,考虑到这些是为了能够使用对象而必须具备的属性(至少据我从提供的代码中所理解的那样)

于 2013-04-30T09:58:03.400 回答
1

如果您有要设置的属性user1并且pass1您的DOit方法设置为private,则您实际上不需要将参数传递给此方法。

您可以简单地初始化您的ZipLoad对象:

ZipLoad myZipLoad = new ZipLoad();
myZipLoad.setUser = "abc";  // can be anything !
myZipLoad.setPass = "abc123";

就像你已经做的那样,然后在DOit方法中使用属性值。所以方法可以在没有参数的情况下重新定义:

private void DOit()
{
    Do some stuff...
}
于 2013-04-30T10:19:53.877 回答
0

当您通过属性设置方法中使用的值时,您不需要再次将它们传递给方法。

但是,如果这些变量只在方法中使用(并且不需要存储在 ZipLoad 类中),则删除属性并使用以下内容:

myZipLoad.DOit("abc", "abc123");

不过,您必须DOit公开该方法。

于 2013-04-30T09:55:21.170 回答
0

你需要让你的方法public,你不需要将用户名和密码传递给方法,你可以简单地在方法中使用它们。

public void DOit()
    {
       //you can reach your parameters from here...
    }

所以你可以像这样使用它:

    ZipLoad myZipLoad = new ZipLoad();
    myZipLoad.setUser = "abc";  // can be anything !
    myZipLoad.setUser = "abc123";
    myZipLoad.DOit();
于 2013-04-30T09:56:13.527 回答
0

使用访问修饰符的最基本原则是您要设置什么级别的权限。使用私有意味着它是最低访问级别。那么,你为什么要设计一些私人的东西并想作为公共的东西使用。而是使用 public 代替。

有关可访问性级别,请参阅 MSDN:

http://msdn.microsoft.com/en-AU/library/ba0a1yw2(v=vs.71).aspx

于 2013-04-30T10:01:40.830 回答
0

似乎这里有很多混乱。如果我对您的理解正确,您有两种选择,具体取决于您想做什么。

如果您可以更改方法签名,则可以这样做:

private string user1;
private string pass1;

public string setUser
{
    set { user1 = value ; }
}
public string setPass
{
    set { pass1 = value; }
}

private void DOit() // Note: No parameters here!
{  
    // use setUser and setPass directly here, like:
    var user = setUser;
    Do some stuff...
}

如果您不能更改方法签名,并且出于某种原因绝对希望将值作为参数传递(可能是出于测试目的,还是出于其他原因?),也许重载是一种选择:

private string user1;
private string pass1;

public string setUser
{
    set { user1 = value ; }
}
public string setPass
{
    set { pass1 = value; }
}

// New method, just to call the other one:
private void DOit() 
{  
    // Just call the original method, with 
    // the properties as parameters:
    DOit(setUser, setPass);
}

// Your original method:
private void DOit(string uName, string pWord) 
{  
    Do some stuff...
}
于 2013-04-30T10:22:57.437 回答