C# “究竟是什么?”;管理的;密码? 我写了C/C++代码已经有将近二十年了,我知道Perl、Python、PHP和一些java,我正在教自己JavaScript。但我从未做过任何.NET、VB或C的东西。管理的代码的确切含义是什么
维基百科只是 在虚拟机管理下执行的代码 它特别指出Java(通常)是托管代码,所以C# “究竟是什么?”;管理的;密码? 我写了C/C++代码已经有将近二十年了,我知道Perl、Python、PHP和一些java,我正在教自己JavaScript。但我从未做过任何.NET、VB或C的东西。管理的代码的确切含义是什么,c#,.net,vb.net,managed-code,C#,.net,Vb.net,Managed Code,维基百科只是 在虚拟机管理下执行的代码 它特别指出Java(通常)是托管代码,所以 为什么这个词似乎只适用于C#/.NET? 你能把C#编译成一个包含虚拟机的.exe吗,或者你必须把它打包并交给另一个.exe(一个java)吗? 同样地 .NET是一种语言还是一个框架,这里的“框架”到底是什么意思? 好的,这不仅仅是一个问题,但对于像我一样在这个行业工作了这么久的人来说,我现在觉得自己有点不对劲…….NET是一个框架。 它可以从多种语言(VB.NET、C#、IronPython、boo等
- 为什么这个词似乎只适用于C#/.NET?
- 你能把C#编译成一个包含虚拟机的.exe吗,或者你必须把它打包并交给另一个.exe(一个java)吗?
- .NET是一种语言还是一个框架,这里的“框架”到底是什么意思?
编译的C#.exe包含独立于平台的代码,可以在任何与.NET兼容的环境中运行,包括Mono。但是,运行时通常与使用它的应用程序分开分发。它主要用于描述.NET,因为这是Microsoft选择用来区分.NET与C/C++和其他较旧语言的术语。微软之所以选择它,是因为它不是一个通常与Java相关联的术语,因为他们不想强调C#/.NET和Java之间的相似性(而不是将其称为“虚拟机代码”,这会让它听起来更像Java)。基本上,“托管代码”的使用是市场驱动的,而不是技术驱动的术语。.NET是一个框架。公共语言运行库(CLR)执行编译解决方案时生成的Microsoft中间语言(MSIL)代码(即,它不编译为机器代码)。您不能在exe中包含API,也不希望包含API,因为它非常大。这里的主要好处是内存管理(还有其他一些安全优势,可能还有我不知道的其他优势)。我可以回答框架问题。NET是框架,C#,VB.NET等是语言。基本上,.NET提供了一个通用的库平台来调用任何使用.NET的语言都可以调用的(所有系统….DLL)。所有.NET语言都被编译成MSIL(Microsoft中间语言,更好地称为IL),然后可以在安装了相应的.NET framework的任何PC上运行。托管意味着代码不会编译为本机代码,因此在虚拟机的支持下运行。Java编译成一种称为字节码的中间格式,Java虚拟机知道如何解释和执行字节码。所有的.NET语言都做类似的事情,编译为.NET运行时解释的IL(中间语言)。这有点令人困惑,因为.NET IL有.dll和.exe文件结尾 主要是指所有内存分配都是为您“管理”的。如果您使用的是托管代码,那么您不必担心在使用完对象后释放它们。简单地允许它们超出范围将意味着VM最终将识别出不再存在对它们的任何引用,并将垃圾收集它们并将内存返回给系统 另一方面,非托管代码只会“泄漏”,除非在放弃引用之前显式释放指针 将C#代码编译为.exe时,它将编译为公共中间语言(CIL)字节码。无论何时运行CIL可执行文件,它都会在Microsofts公共语言运行时(CLR)虚拟机上执行。因此,不可能在.NET可执行文件中包含VM。必须在运行程序的任何客户端计算机上安装.NET运行时 回答第二个问题,.NET是一个框架,因为它是一组库、编译器和虚拟机,它们不是特定于语言的。因此,您可以在.NET、Framework、VB、C++和任何其他具有.NET编译器的语言中编写.NET框架代码。p>
上面的页面列出了具有.NET版本的语言及其页面链接。它可以引用虚拟机执行的任何代码,而不是直接由CPU执行的代码
我认为这可以实现垃圾收集和数组边界检查等功能。冒着冒犯某些人的风险,我怀疑使用了managed这个词,这样他们就可以使用unmanaged这个词而不是compiled。虽然托管可能意味着更多,但现实情况是,它似乎主要用于区分几乎是即时编译的代码(作为对曾经解释过的代码或pcode的替代)和本机编译代码 或者换一种方式,您更愿意使用哪种方式: a) 非托管代码,可能对系统造成无法控制的影响 b) 本机编译代码,速度快、可靠且接近操作系统 c的
class Bar : public Foo {
private:
int fubar;
public:
Bar(int i) : fubar(i) {}
int * getFubar() { return * fubar; }
}
public ref class Bar : public Foo
private:
int fubar;
public:
Bar(int i) : fubar(i) {}
int ^ getFubar() { return ^ fubar; }
}
o The .NET Framework Class Library (FCL).
o The FCL provides a rich set of high-level functionality for developers.
o Common Language Runtime (CLR) executes Common Intermediate Language (CIL).
o The CLR is God: it runs, controls, and polices everything.
o Every development language is compiled to CIL, which is run by the CLR.
o C# and VB are the two main development languages.
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("hello world");
}
}
[HostProtection(SecurityAction.LinkDemand, UI=true)]
public static void WriteLine(string value)
{
Out.WriteLine(value);
}