在方法中声明一个类或结构

Tho*_*eld 19 .net c#

在C#中,是否可以在方法中声明类或结构,如在C++中?

例如C++:

void Method()
{
   class NewClass
   {
   } newClassObject;
}
Run Code Online (Sandbox Code Playgroud)

我试过了,但它不允许我这样做.

eri*_*len 16

您可以创建一个匿名类型,如下所示:

var x = new { x = 10, y = 20 };
Run Code Online (Sandbox Code Playgroud)

但除此之外:没有.

  • 是的,不是.x是一个变量,但x.GetClass()返回的(匿名)类型是一个类. (12认同)
  • 这是一个对象,而不是一个类. (7认同)

Sle*_*idi 11

是的,可以声明一个class内部a class并调用它们inner classes

public class Foo
{
    public class Bar
    { 

    }
 }
Run Code Online (Sandbox Code Playgroud)

以及如何创建实例

Foo foo = new Foo();
Foo.Bar bar = new Foo.Bar();
Run Code Online (Sandbox Code Playgroud)

在一个方法中,您可以创建一个anonymous类型的对象

void Fn()
{
 var anonymous= new { Name="name" , ID=2 };
 Console.WriteLine(anonymous.Name+"  "+anonymous.ID);
}
Run Code Online (Sandbox Code Playgroud)

  • OP 要求在方法内部定义一个类。你回答了错误的问题。 (4认同)
  • 不赞成投票,因为这不是问题。 (2认同)
  • @kaalus,Sleiman 正确回答了*原始*(即未经编辑的)问题。查询该问题的编辑历史记录表明,最初提交的标题和正文提出了相互矛盾的问题。苏莱曼明确回答了这两个问题。在其他人要求澄清后,对*正文*中的问题进行了编辑以匹配标题中的问题。我希望你没有对苏莱曼投反对票。 (2认同)

mat*_*mmo 8

您可以在问题所述的类中声明它们,但不能在问题标题所述的方法内部声明它们.就像是:

public class MyClass
{
    public class MyClassAgain
    {
    }

    public struct MyStruct
    {
    }
}
Run Code Online (Sandbox Code Playgroud)