我正在尝试制作一些会导致JIT内联的"Hello World"大小的C#代码片段.到目前为止我有这个:
class Program
{
static void Main(string[] args)
{
Console.WriteLine( GetAssembly().FullName );
Console.ReadLine();
}
static Assembly GetAssembly()
{
return System.Reflection.Assembly.GetCallingAssembly();
}
}
Run Code Online (Sandbox Code Playgroud)
我从Visual Studio编译为"Release" - "Any CPU"和"Run without debugging".它显示我的示例程序程序集的名称,因此显然GetAssembly()没有内联Main(),否则它将显示mscorlib程序集名称.
如何编写一些会导致JIT内联的C#代码片段?
我有一个包含XML文件的文件夹,我需要将它们合并到一个文件中.当我尝试这个:
var allFiles = Directory.GetFiles(path, "*.xml");
String result = Path.Combine( path, "merged.xml" );
using( var stream = new FileStream( result, FileMode.Create, FileAccess.Write ) ) {
foreach( var file in allFiles ) {
var fileContents = File.ReadAllBytes( file );
stream.Write( fileContents , 0, fileContents.Length );
}
stream.Close();
}
Run Code Online (Sandbox Code Playgroud)
我看到0xEF 0xBB 0xBF(字节顺序标记)序列出现在任何两个文件的内容之间的结果文件中,但不出现在文件的开头而不是文件的末尾.
如果我StreamWriter改用:
var allFiles = Directory.GetFiles(path, "*.xml");
String result = Path.Combine( path, "merged.xml" );
using( var stream = new FileStream( result, FileMode.Create, FileAccess.Write ) ) {
using( …Run Code Online (Sandbox Code Playgroud) 假设我的函数接受a FILE*并且它想知道底层文件是如何打开的 - 具体是哪个mode(例如r或者rb)传入fopen().
mode如果代码只传递FILE*已经打开的文件,我的代码怎么能找到它?
我想调用Queryable.Where()并获取所有元素.没有Where()谓词函数,没有任何版本可行.所以我必须这样做:
var result = table.Where( x => true );
Run Code Online (Sandbox Code Playgroud)
它起作用但对我来说感觉真的很愚蠢 - x从未使用过,并且=>"箭头"符号没有"转换" .
有更优雅的解决方案吗?