在Apple创建的代码中,有这一行:
CMTimeMakeWithSeconds( newDurationSeconds, 1000*1000*1000 )
Run Code Online (Sandbox Code Playgroud)
没有任何理由来表达1,000,000,000
的1000*1000*1000
?
为什么不1000^3
呢?
所以我在XNA,C#4.0中创建一个游戏,我需要管理很多PowerUps(在代码中都继承自"PowerUp"类),并处理PowerUps的后端管理我目前有一个枚举,PowerupEffectType,具有PowerUp的每个子类的值.最终在代码中我需要进行从PowerupEffectType到Powerup类型的转换(Type
通常用类实现typeof([class name])
).
由于这是一个组项目,我想尽可能将PowerupEffectType的每个值与其对应的类Type结合,即:不仅仅是期望我的其他程序员使用switch语句手动进行转换,并确保以后添加/扩展在尽可能少的地方进行尽可能少的变更.我有几个选项,到目前为止我发现的最好的是创建枚举伪方法,将所有内容压缩到一个switch语句(我想要的99%),这要归功于我在这里找到的一些提示:http ://msdn.microsoft.com/en-us/library/bb383974.aspx
但我试图更进一步 - 我可以保存Type
一个enum
吗?我知道你可以将枚举保存为特定类型(链接:http://msdn.microsoft.com/en-us/library/cc138362.aspx),但Type
不是其中之一.当前选择是byte,sbyte,short,ushort,int,uint,long和ulong.是否有任何可行的方法将转换a保存Type
到上述任何数据类型并返回?
为了清楚起见,这就是我希望我能做到的,我正在寻找一种方法:
// (Assuming 'LightningPowerup', 'FirePowerup', and 'WaterPowerup' are
// all declared classes that inherit from a single base class)
public enum PowerupEffectType
{
LIGHTNING = typeof(LightningPowerup),
FIRE = typeof(FirePowerup),
WATER = typeof(WaterPowerup)
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点,或者我只是过度复杂解决了已经99%完成的问题?
提前致谢!
正是(引擎盖下)做了什么+=
和-=
运营商呢?
或者它们是隐含的,因为它们是按类型定义的?
我已广泛使用它们,这是语法的一个非常简单的特性,但我从未想过它的工作原理的深度.
关于这个问题带来了什么
我可以像这样连接一个字符串值:
var myString = "hello ";
myString += "world";
Run Code Online (Sandbox Code Playgroud)
一切都很好.但为什么这不适用于收藏?
var myCol = new List<string>();
myCol += "hi";
Run Code Online (Sandbox Code Playgroud)
你可能会说'你正试图附加一个不同的类型,你不能将一个字符串附加到一个非字符串的类型'.但以下情况也不起作用:
var myCol = new List<string>();
myCol += new List<string>() { "hi" };
Run Code Online (Sandbox Code Playgroud)
好吧,也许它不适用于集合,但以下不是一种(某种)事件处理程序集合?
myButton.Click += myButton_Click;
Run Code Online (Sandbox Code Playgroud)
我显然缺乏对这些运算符如何工作的深入理解.
请注意:myCol
在实际项目中,我不是试图以这种方式构建集合.我只是对这个运营商的运作感到好奇,这是假设的.
我正在制作一个帮助应用程序来重新格式化一些代码文件并创建新的代码文件,这些代码文件将被添加到我的其他项目中,所以我可以立即使用新代码,但是我在添加新代码文件时遇到了麻烦自动进入我的项目.顺便说一下,它在c#中,帮助应用程序是WinForms.
这个问题唯一的答案有两种方法,但我不能让它们中的任何一种起作用.第一个我找不到Microsoft.Build
要引用的程序集,而在另一个中显然没有足够的参数用于命令行.
如何在不使用第三方应用程序的情况下以编程方式将文件包含到项目中?
基本上,我正在寻找相当于这个:
......但是使用代码完成了.
这些是我认为解决方案应该提供的功能:
通过用户@ psubsee2003的帮助,我能够在我的计算机上的Microsoft.Build.dll
文件C:\Windows\Microsoft.NET\Framework\v4.0.30319
夹中找到该文件,并通过将我的项目的目标框架更改为版本4 完整配置文件而不是默认的客户端配置文件来成功导入它.
我发现了如何使用该AddItem
方法:
var p = new Microsoft.Build.Evaluation.Project(@"C:\projects\MyProject.csproj");
p.AddItem("Compile", @"C:\folder\file.cs");
p.Save();
Run Code Online (Sandbox Code Playgroud)
该文件将出现在项目的根文件夹中,除非项目已经有一个文件夹folder
,在这种情况下文件将放在那里.因此,基本上该文件将被放置在原始文件的路径中找到的最深的文件夹链中,该路径将朝向根文件夹.
c# projects-and-solutions visual-studio-2010 visual-studio winforms
我正在为我的方形平台平台游戏制作一个二维地图编辑器,当我意识到我真的可以使用一个图像编辑器,它能够重新绘制相邻的像素等等,所以我想我应该尝试通过应用程序读取绘制的水平然后将其转换为轻量级格式.
我不确定是否使用位图格式是必须的,但我猜,读取特定像素比使用PNG更容易.
所以我的目标是打开一个图像,遍历每个像素,寻找那些适合我的图块方案的颜色,并将相应的图块放入块数组中.
注意:我已经有了轻量级格式,所以我只需要将像素值读入数组.
Bitmap myBitmap = new Bitmap(@"input.png");
for (int x = 0; x < myBitmap.Width; x++)
{
for (int y = 0; y < myBitmap.Height; y++)
{
Color pixelColor = myBitmap.GetPixel(x, y);
// things we do with pixelColor
}
}
Run Code Online (Sandbox Code Playgroud)
Bitmap myBitmap = new Bitmap(@"input.png");
for (int x = 0; x < myBitmap.Width; x++)
{
for (int y = 0; y < myBitmap.Height; y++)
{
// Get the color of a pixel within myBitmap.
Color …
Run Code Online (Sandbox Code Playgroud) 我现在已经看到了两种不同的方法来制作布尔返回方法:
bool Case1()
{
if (A)
return true;
else
return false;
}
bool Case2()
{
if (A)
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud)
哪一个更快?不写else
只是为了保存一条线,使它更清晰,还是可以忽略不计的性能增益?
如何在string[]
不获取IO异常的情况下读取也在Excel中打开的文本文件的所有行?
有一个问题可能是答案的一部分,虽然我不知道如何使用其中的内容: 如何使用.net StreamReader打开已打开的文件?
当我尝试这样做时......
Item[,] array = new Item[w, h]; // Two dimensional array of class Item,
// w, h are unknown at compile time.
foreach(var item in array)
{
item = new Item();
}
Run Code Online (Sandbox Code Playgroud)
......我得到Cannot assign to 'item' because it is a 'foreach iteration variable'
.
不过,我还想那样做.
我们的想法是将默认Item
类值分配给现有项目.
我想从Visual Studio中轻松访问我的项目文件夹.如何在Windows资源管理器中打开其文件夹?