如何使用没有返回类型的方法而不将其设为公共
本文关键字:何使用 返回类型 方法 | 更新日期: 2023-09-27 18:11:41
我有一个类,它包含一个有两个参数的方法。我使用属性来设置这些参数的值,但我不知道如何将它们传递给方法。类名是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";
接下来我该怎么做才能使用这个方法呢?
谢谢。
这个怎么样:
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");
不太清楚DOit
方法是什么,但如果它在ZipLoad
内部,你可以只使用字段,考虑到属性只有set
,出于某种原因。
:
public class ZipLoad {
....
private void DOit(string uName, string pWord)
{
Do some stuff...
}
//someone calls it
DOit(user1 , pass1);
....
}
但是我要做的是在内部使用property,所以定义它们为:
public string setUser
{
get {return user1}
}
public string setPass
{
get{ returnpass1 ; }
}
并设置类的字段的值,考虑到这些是属性为了能够使用对象(至少是我从所提供的代码中理解的)
如果您有属性设置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...
}
当你通过属性设置方法中使用的值时,你不需要将它们再次传递给方法。
但是,如果这些变量只在方法中使用(并且不需要存储在ZipLoad类中),则删除这些属性并使用以下内容:
myZipLoad.DOit("abc", "abc123");
您必须将DOit
方法设为public
你需要让你的方法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();
使用访问修饰符的基本原则是要设置什么级别的权限。使用private表示它是最低访问级别。那么,为什么你设计了一些私有的东西,却想把它用作公共的呢?而是使用public。
可访问性级别参考MSDN:
http://msdn.microsoft.com/en-AU/library/ba0a1yw2 (v = vs.71) . aspx
似乎这里有很多困惑。如果我没理解错的话,你有两个选择,取决于你想做什么。
如果你可以改变你的方法签名,你可以这样做:
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...
}