如何在不公开的情况下使用没有返回类型的方法?

时间:2013-04-30 09:51:21

标签: c# oop class methods

我有一个包含两个参数的方法的类。我使用属性来设置这些参数的值,但我不知道如何将它们传递给方法。类名是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";

我接下来该怎么办才能使用这种方法?

谢谢。

7 个答案:

答案 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)

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