當前位置:首頁 » 編程軟體 » 編譯csharp

編譯csharp

發布時間: 2025-05-09 15:03:44

A. 什麼是csharp 和visual studio

1、C Sharp

C#讀作C Sharp。C#是微軟公司發布的一種面向對象的、運行於.NET Framework和.NET Core(完全開源,跨平台)之上的高級程序設計語言。

C#是一種安全的、穩定的、簡單的,由C和C++衍生出來的面向對象的編程語言。它在繼承C和C++強大功能的同時去掉了一些它們的復雜特性。

2、visual studio

Microsoft Visual Studio(簡稱VS)是美國微軟公司的開發工具包系列產品。VS是一個基本完整的開發工具集,它包括了整個軟體生命周期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發環境(IDE)等等。

所寫的目標代碼適用於微軟支持的所有平台。

(1)編譯csharp擴展閱讀

c#語言結構

1、類:

一個基本的C#類中包含數據成員、屬性、構造器和方法。屬性可以是靜態或實例成員。在C#中類的聲明與C++和Java很相似。

2、布爾運算:

條件表達式的結果是布爾數據類型,布爾數據類型是這種語言中獨立的一種數據類型,從布爾類型到其他類型沒有直接的轉換過程,布爾常量true和false是C#中的關鍵字。

3、介面:

是其他類型為確保它們支持某些操作而實現的引用類型。介面從不直接創建而且沒有實際的表示形式,其他類型必須轉換為介面類型。

4、編譯:

程序直接編譯成標準的二進制可執行形式.但C#的源程序並不是被編譯成二進制可執行形式,而是一種中間語言(IL),類似於JAVA位元組碼。

5、類型:

C# 中的類型一共分為兩類,一類是值類型(Value Type),一類是引用類型(Reference Type)。

B. C SHARP特點

C#的特點主要包括以下幾點:

  1. 動態編程特性

    • C# 4.0引入了dynamic關鍵字,允許將靜態對象轉化為動態對象,提供了類似JavaScript、Python等動態語言的靈活性。
  2. 高效的編譯策略

    • 使用MSIL編譯,雖然MSIL不是解釋執行,但最終會被編譯成機器碼,性能表現可能與Java相當。
  3. 清晰的代碼組織

    • 支持在類外部聲明介面、枚舉和結構體,通過using關鍵字引用其他命名空間的內容,使代碼結構更加清晰易懂。
  4. 豐富的數據類型

    • 提供包括bool、byte等基礎類型,以及專為貨幣數據設計的decimal類型,具有高精度,能存儲28位的十進制數字。
  5. 面向對象的特性

    • 所有類繼承自基礎的object類,string類型作為語言的一部分,常用於文本處理。C#方法支持可變參數,允許通過ref和out關鍵字進行引用傳遞。
  6. 與COM的集成

    • C#與COM的集成是其顯著特點,使C#程序能夠無縫地與Win32組件交互,為編寫COM客戶端或伺服器提供了極大便利。
  7. 索引和屬性

    • 通過方括弧中的數字匿名引用類成員,提供了類似數組操作的便捷性。同時,代理和反饋機制允許創建智能方法指針,用於方法的安全調用和事件處理。

C#作為微軟為.NET Framework量身訂做的面向對象編程語言,結合了C/C++的強大功能和Visual Basic的簡易使用特性,是第一個組件導向的程序語言,但需注意C#程序主要在Windows環境下運行。

C. 如何用C#動態編譯,執行代碼 CSharpCodeProvider

如何用C#動態編譯、執行代碼
在開始之前,先熟悉幾個類及部分屬性、方法:CSharpCodeProvider、ICodeCompiler、CompilerParameters、CompilerResults、Assembly。

一、CSharpCodeProvider
提供對C#代碼生成器和代碼編譯器的實例的訪問。如果要動態生成VB代碼,可以使用VBCodeProvider。

CreateCompiler():獲取編譯器的實例。

二、ICodeCompiler
定義用於調用源代碼編譯的介面或使用指定編譯器的CodeDOM樹。每種編譯方法都接受指示編譯器的CompilerParameters對象,並返回指示編譯結果的CompilerResults對象。

CompilerAssemblyFromSource(CompilerParameters option, string source):使用指定的編譯器,從包含源代碼的字元串設置編譯程序集。

三、CompilerParameters
表示用於調用編譯器的參數。

ReferencedAssemblies:獲取當前項目所引用的程序集。Add方法為程序集添加引用。
GenerateExecutable:獲取或設置一個值,該值指示是否生成可執行文件。若此屬性為false,則生成DLL,默認是false。
GenerateInMemory:獲取或設置一個值,該值指示是否在內存中生成輸出。

四、CompilerResults
表示從編譯器返回的編譯結果。

CompiledAssembly:獲取或設置以編譯的程序集,Assembly類型。

五、Assembly
就是程序集了(不知道如何描述了)。

大致了解了以上知識之後,就可以使用C#動態的編譯並執行代碼了,一下是一段示常式序:
using System;
using System.Reflection;
using System.Globalization;
using Microsoft.CSharp;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Text;

namespace ConsoleApplication1
{
public class Program
{
static void Main(string[] args)
{
// 1.CSharpCodePrivoder
CSharpCodeProvider objCSharpCodePrivoder = new CSharpCodeProvider();

// 2.ICodeComplier
ICodeCompiler objICodeCompiler = objCSharpCodePrivoder.CreateCompiler();

// 3.CompilerParameters
CompilerParameters objCompilerParameters = new CompilerParameters();
objCompilerParameters.ReferencedAssemblies.Add("System.dll");
objCompilerParameters.GenerateExecutable = false;
objCompilerParameters.GenerateInMemory = true;

// 4.CompilerResults
CompilerResults cr = objICodeCompiler.CompileAssemblyFromSource(objCompilerParameters, GenerateCode());

if (cr.Errors.HasErrors)
{
Console.WriteLine("編譯錯誤:");
foreach (CompilerError err in cr.Errors)
{
Console.WriteLine(err.ErrorText);
}
}
else
{
// 通過反射,調用HelloWorld的實例
Assembly objAssembly = cr.CompiledAssembly;
object objHelloWorld = objAssembly.CreateInstance("DynamicCodeGenerate.HelloWorld");
MethodInfo objMI = objHelloWorld.GetType().GetMethod("OutPut");

Console.WriteLine(objMI.Invoke(objHelloWorld, null));
}

Console.ReadLine();
}

static string GenerateCode()
{
StringBuilder sb = new StringBuilder();
sb.Append("using System;");
sb.Append(Environment.NewLine);
sb.Append("namespace DynamicCodeGenerate");
sb.Append(Environment.NewLine);
sb.Append("{");
sb.Append(Environment.NewLine);
sb.Append(" public class HelloWorld");
sb.Append(Environment.NewLine);
sb.Append(" {");
sb.Append(Environment.NewLine);
sb.Append(" public string OutPut()");
sb.Append(Environment.NewLine);
sb.Append(" {");
sb.Append(Environment.NewLine);
sb.Append(" return \"Hello world!\";");
sb.Append(Environment.NewLine);
sb.Append(" }");
sb.Append(Environment.NewLine);
sb.Append(" }");
sb.Append(Environment.NewLine);
sb.Append("}");

string code = sb.ToString();
Console.WriteLine(code);
Console.WriteLine();

return code;
}
}
}

D. 誰給簡單介紹一下C#

特點有很多,簡單易上手是比較明顯的
編程方式。。。你指什麼?
主要應用:網路,WEB開發
簡單,但是依然有它需要長時間研究的地方
IDE:VS系列,2003,2005,2008等
可以游戲開發,理論上是都能做的

熱點內容
租用伺服器如何測速 發布:2025-05-09 20:03:39 瀏覽:790
文件夾左邊 發布:2025-05-09 19:59:21 瀏覽:730
wincc腳本從入門到精通 發布:2025-05-09 19:35:39 瀏覽:894
網路電腦配置哪個好 發布:2025-05-09 19:35:02 瀏覽:273
函數中未指定存儲類別 發布:2025-05-09 19:24:45 瀏覽:131
大話西遊2腳本錯誤解決方法 發布:2025-05-09 19:23:24 瀏覽:898
我的世界伺服器op掛下載 發布:2025-05-09 19:23:23 瀏覽:647
政府配置哪些資源 發布:2025-05-09 19:21:57 瀏覽:231
怎麼注銷電腦密碼 發布:2025-05-09 19:18:47 瀏覽:148
台灣中華電信大型伺服器雲伺服器 發布:2025-05-09 19:09:08 瀏覽:408