如何使用没有返回类型的方法而不将其设为公共

本文关键字:何使用 返回类型 方法 | 更新日期: 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 ; }
}

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

如果您有属性设置user1pass1,并且您的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...
}