我有一个包含两个参数的方法的类。我使用属性来设置这些参数的值,但我不知道如何将它们传递给方法。类名是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";
我接下来该怎么办才能使用这种方法?
谢谢。
答案 0 :(得分: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");
答案 1 :(得分: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设置字段的值,考虑到这些是属性 为了能够使用一个对象必须拥有一个对象(至少从我提供的代码中了解到的)
答案 2 :(得分: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...
}
答案 3 :(得分:0)
当您通过属性设置方法中使用的值时,您无需再次将它们传递给方法。
但是,如果这些变量只在该方法中使用(并且不需要存储在ZipLoad类中),则删除属性并使用以下内容:
myZipLoad.DOit("abc", "abc123");
您必须公开DOit
方法。
答案 4 :(得分: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();
答案 5 :(得分:0)
使用访问修饰符的基本原则是您要设置的权限级别。使用私有意味着它是访问级别最低的。那么,为什么你设计一些私人的东西,并希望作为公共使用。而是使用公共代替。
有关可访问性级别,请参阅MSDN:
http://msdn.microsoft.com/en-AU/library/ba0a1yw2(v=vs.71).aspx
答案 6 :(得分: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...
}