是否可以使用初始化列表实例化一个类并调用一个方法,而这些操作都可以在单个命令中完成?

时间:2018-11-16 17:01:35

标签: c# object constructor

我想使用初始化列表实例化一个对象,并在同一命令中调用一个方法。

<?xml version='1.0' encoding='utf-8'?>
<Classes>         
    <Class Name="Class A">
        <UniqueSourceIdentifier>1345</UniqueSourceIdentifier>
        <Students>
            <Student Name="Test1" Units="Unit A" />
            <Student Name="&lt;Choose One&gt;" Units="&lt;Choose One&gt;" />
            <Student Name="&lt;Choose One&gt;" Units="&lt;Choose One&gt;" />
            <Student Name="&lt;Choose One&gt;" Units="&lt;Choose One&gt;" />
        </Students>  <!-- Added by edit -->
    </Class>         <!-- Added by edit -->
</Classes>           <!-- Added by edit -->

该类如下:

string importantData = SearchOptions() {id = "10", className = "Fluffy"}.justAFunction();

我想保留使用初始化列表定义必要字段的灵活性,而将其他字段留空。

以后不需要类对象。仅需要该方法的返回参数。

2 个答案:

答案 0 :(得分:1)

您几乎拥有它。您只需添加new关键字来创建一个新对象,然后才能在其上调用方法:

string importantData = new SearchOptions {id = "10", className = "Fluffy"}.justAFunction();

由于您没有对新创建的对象设置任何引用,因此该行执行后它将立即超出范围,并将由垃圾回收引擎清除。


请注意,为了使这项工作有效,您的代码中还有其他一些问题需要解决:

  1. justAFunction()应该是可公开访问的(在您的示例中,未指定access修饰符,默认值为private,因此它将不起作用)。
  2. 您不能指定两种返回类型(将其声明为string void justAFunction。由于要返回字符串,因此应删除void。)

还有其他一些建议:

  1. 这假定基类包含您要设置的属性(或者它们存在于此类中,为简洁起见,您就忽略了它们)
  2. 实例化对象时设置的属性必须是可公开访问的(或至少从创建对象的任何位置均可访问-通常是public)。
  3. 公共属性和方法应为PascalCase(而不是camelCase)。

请牢记这些建议,您的课程将类似于:

class PageBase
{
    public string Id { get; set; }
    public string ClassName { get; set; }
    public string Text { get; set; }
    public string PartialText { get; set; }
    public string XPath { get; set; }
    public string CssModifier { get; set; }
}

class SearchOptions : PageBase
{
    public SearchOptions()
    {
        Id = string.Empty;
        ClassName = string.Empty;
        Text = string.Empty;
        PartialText = string.Empty;
        XPath = string.Empty;
        CssModifier = string.Empty;
    }

    public string JustAFunction()
    {
        Console.WriteLine(Id);
        Console.WriteLine(ClassName);
        return "ImportantReturn";
    }
}

然后获取重要数据的调用如下:

string importantData = new SearchOptions {Id = "10", ClassName = "Fluffy"}.JustAFunction();

答案 1 :(得分:0)

替换“ string void justAFunction()” =>“公共字符串justAFunction()”。