Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以在Ruby/Java/C中创建这样的对象吗?_C#_Java_Ruby_Object_Naming Conventions - Fatal编程技术网

C# 我可以在Ruby/Java/C中创建这样的对象吗?

C# 我可以在Ruby/Java/C中创建这样的对象吗?,c#,java,ruby,object,naming-conventions,C#,Java,Ruby,Object,Naming Conventions,您能从名为Trung.nguyenn的类创建对象吗?因为nguyenn不是一个方法吗?在Java C#和Ruby中,您不能创建名称中带有的变量 // C# and Java Object Trung.NguyenThe = ""; # Ruby Trung.NguyenThe = "" 该变量名在所有三种语言中都是非法的 如果要执行类似的操作,请使用下划线\uu // C# and Java Object Trung_NguyenThe = ""; # Ruby Trung_NguyenThe

您能从名为
Trung.nguyenn的类创建对象吗?
因为
nguyenn
不是一个方法吗?

在Java C#和Ruby中,您不能创建名称中带有
的变量

// C# and Java
Object Trung.NguyenThe = "";
# Ruby
Trung.NguyenThe = ""
该变量名在所有三种语言中都是非法的

如果要执行类似的操作,请使用下划线
\uu

// C# and Java
Object Trung_NguyenThe = "";
# Ruby
Trung_NguyenThe = ""
在Java C#和Ruby中,不能创建名称中带有
的变量

// C# and Java
Object Trung.NguyenThe = "";
# Ruby
Trung.NguyenThe = ""
该变量名在所有三种语言中都是非法的

如果要执行类似的操作,请使用下划线
\uu

// C# and Java
Object Trung_NguyenThe = "";
# Ruby
Trung_NguyenThe = ""

首先,对象没有名称。类和变量可以

所以我假设你问的是关于用句点命名类的问题(基于你最后的评论)

直截了当的答案是“不”,但可以使用名称空间/包或内部类来模拟

名称空间:

namespace Trung {
    public class NguyenThe {}
}

// Usage:
namespace Whatever {
    public class Client {
        public main() {
            var x = new Trung.NguyenThe();
        }
    }
}
内部类:

namespace Whatever {
    public class Trung {
        public class NguyenThe {}
    }

    // Usage:
    public class Client {
        public main() {
            var x = new Trung.NguyenThe();
        }
    }
}

(注意:这是C#代码,但我相信Java也可以这样做。我想Ruby也有同样的概念。)

首先,对象没有名称。类和变量可以

所以我假设你问的是关于用句点命名类的问题(基于你最后的评论)

直截了当的答案是“不”,但可以使用名称空间/包或内部类来模拟

名称空间:

namespace Trung {
    public class NguyenThe {}
}

// Usage:
namespace Whatever {
    public class Client {
        public main() {
            var x = new Trung.NguyenThe();
        }
    }
}
内部类:

namespace Whatever {
    public class Trung {
        public class NguyenThe {}
    }

    // Usage:
    public class Client {
        public main() {
            var x = new Trung.NguyenThe();
        }
    }
}

(注意:这是C#代码,但我相信Java也可以做到。我想Ruby也有同样的概念。)

当然。创建一个名为Trung的包。在这个包中创建一个名为nguyenn的类


或者您假设Trung已经是一个类名了吗?

当然。创建一个名为Trung的包。在这个包中创建一个名为nguyenn的类


或者你认为Trung已经是一个类名了吗?

在Ruby中,没有类名。类只是像其他对象一样的对象,它们被分配给变量,就像其他变量一样

Trung.nguyenn
不是合法的变量名,因此这是不可能的:

class Object
  klass = Class.new do
    def to_s; 'Hello' end
  end
  const_set :'Trung.NguyenThe', klass
  # NameError: wrong constant name Trung.NguyenThe
end
当然,您可以创建一个对象,用类响应
nguyenn
消息,并将该对象分配给名为
Trung
的变量,但这不是您要问的问题:

klass = Class.new do
  def to_s; 'Hello' end
end
(Trung = Object.new).define_singleton_method(:NguyenThe) { klass }

puts Trung.NguyenThe.new
# Hello
在C#和Java中,句点在类名中也是非法的。C#有一种转义机制,允许您使用其他保留字作为名称,但这种机制不允许使用非法名称,只能使用保留的名称


有人提议在Java名称中增加符号自由度,但到目前为止,还没有实现。

在Ruby中,没有类名。类只是像其他对象一样的对象,它们被分配给变量,就像其他变量一样

Trung.nguyenn
不是合法的变量名,因此这是不可能的:

class Object
  klass = Class.new do
    def to_s; 'Hello' end
  end
  const_set :'Trung.NguyenThe', klass
  # NameError: wrong constant name Trung.NguyenThe
end
当然,您可以创建一个对象,用类响应
nguyenn
消息,并将该对象分配给名为
Trung
的变量,但这不是您要问的问题:

klass = Class.new do
  def to_s; 'Hello' end
end
(Trung = Object.new).define_singleton_method(:NguyenThe) { klass }

puts Trung.NguyenThe.new
# Hello
在C#和Java中,句点在类名中也是非法的。C#有一种转义机制,允许您使用其他保留字作为名称,但这种机制不允许使用非法名称,只能使用保留的名称


有人提议在Java名称中使用更多的符号自由,但到目前为止,它们还没有实现。

只是想一想:你为什么还需要这个?从视觉上看,它意味着类型“Trung”中的一个类型“nguyenn”。如果“nguyenn”是普通类“Trung”中的一个特殊类型呢?对不起,各位,我只是想在课堂上创建类。
var x=new{Name=“Trung.nguyenn”}?;)只是想一想:你为什么还需要这个?从视觉上看,它意味着类型“Trung”中的一个类型“nguyenn”。如果“nguyenn”是普通类“Trung”中的一个特殊类型呢?对不起,各位,我只是想在课堂上创建类。
var x=new{Name=“Trung.nguyenn”}?;)是的,谢谢你的回答。我知道这样做是违法的,很抱歉我提出了一个雄心勃勃的问题。是的,我修正了它,让它更清晰。我可以用Ruby在课堂上上课吗?(正如下面的人所示)@Dark,是的,你可以在Ruby中创建嵌套类:那么它将是
myNewMe=Trung::nguyenn.new
?不错。@Dark,是的,就是那样。是的,谢谢你的回答。我知道这样做是违法的,很抱歉我提出了一个雄心勃勃的问题。是的,我修正了它,让它更清晰。我可以用Ruby在课堂上上课吗?(正如下面的人所示)@Dark,是的,你可以在Ruby中创建嵌套类:那么它将是
myNewMe=Trung::nguyenn.new
?不错。@Dark,是的,应该是那样。@DarkCloud:(关于红宝石)有点。您可以在ruby中定义模块内部的类,但是解析模块成员的ruby语法使用
而不是
(这在ruby中很有意义;模块就像一个静态类,您可以使用
仅解析实例/对象成员)。所以它会变成
Trung::nguyenn()
(或者
Trung::nguyenn
,在Ruby中也是如此)。@Dark Cloud:(关于Ruby)有点像。您可以在ruby中定义模块内部的类,但是解析模块成员的ruby语法使用
而不是
(这在ruby中很有意义;模块就像一个静态类,您可以使用
仅解析实例/对象成员)。所以它会变成
Trung::nguyenn()
(或者
Trung::nguyenn
,这在Ruby中是相同的)。对不起,我不是一个真正的rubist,但我相信Ruby有类名。是的,类是一个对象,但这并不意味着它没有关联的名称——即使这里的“名称”的概念与静态语言有点不同。。。您甚至可以通过调用
obj.class.name
动态获取任何对象的类名。。。另外,n类