静态类错误

时间:2017-02-02 09:38:36

标签: c# oop

python manage.py migrate

See here Online Example(代码无效)

主函数上的每一件事我都要使用完全相同的模式,因为我会在很多不同的类中使用它,而且我不想每次都使用非静态类创建对象。 / p>

如果我错了请纠正我

2 个答案:

答案 0 :(得分:5)

该代码的语法有很多问题,@ Sergey在他的回答中解决了这个问题。

您似乎想要从静态方法返回类的实例,并且该类应包含两个属性。

您可以通过创建包含属性的实际非静态类来实现:

public class Check
{
    public string Result1 { get; set; }
    public string Result2 { get; set; }
}

然后从静态方法中返回一个新实例:

public static Check MyValue(string qr)
{
    var result = new Check();
    result.Result1 = "My Name" + qr;
    result.Result2 = "You're" + qr;
    return result;
}

但是,您在代码中的注释中说您不想使用对象。

在这种情况下,您似乎想要使用静态属性。这通常不值得推荐,但它看起来像这样:

public static class Check
{
    public static string Result1 { get; set; }
    public static string Result2 { get; set; }

    public static void MyValue(string qr)
    {
        Result1 = "My Name" + qr;
        Result2 = "You're" + qr;
    }   
}

然后,您可以在调用方法Check.Result1后阅读MyValue()

答案 1 :(得分:4)

您的代码完全错误

  1. myValue方法返回void。您无法将void返回值分配给变量。
  2. 您不能拥有本地变量的public修饰符。
  3. 您不能在同一范围内拥有同名的本地变量
  4. 如果要从方法返回两个值,则应返回包含两个字段的对象 - 自定义类或元组。您也可以使用参数,但我不认为这是您的情况

    public static class Check
    {
        public static Tuple<string, string> MyValue(string qr)
        {
            return Tuple.Create($"My Name {qr}", $"You're {qr}");
        }
    }
    

    使用C#7,它会更好一些。您可以在一行中编写此方法,并为元组属性提供名称

    (string MyName, string YourName) MyValue(string qr) => ($"My Name {qr}", $"You're {qr}");
    

    用法

    var result = Check.MyValue("Example 1");
    Console.WriteLine(result.Item1); // result.MyName
    Console.WriteLine(result.Item2); // result.YourName
    

    您可以练习创建具有良好命名属性的自定义类,而不是使用元组。