我目前正在尝试使用Xna Content Pipeline扩展.在该实验中,我正在尝试加载包含另一个需要加载的"内容项"的文件.例如:
public class CustomItem
{
public string Name;
public Texture2D Texture;
}
Run Code Online (Sandbox Code Playgroud)
现在,在我的内容处理器中,我可以创建一个新的'CustomItem'实例并初始化Name字段,因为它只是一个字符串.但是,我无法在内容编译期间加载纹理文件(注意:纹理只是一个示例,理想情况下我希望能够加载任何其他内容类型).
我正在寻找的是:
// ... start class ...
public override CustomItem Process(SomeInputFormat input, ContentProcessorContext context)
{
return new CustomItem()
{
Name = input.ItemName,
Texture = context.LoadAsset<Texture2D>(input.ItemTexturePath) // I realise LoadAsset<T>() does not exist - it's an example of what would be ideal
};
}
// ... end class ...
Run Code Online (Sandbox Code Playgroud)
有谁知道这是否真的有可能,如果有的话,怎么去呢?如果可能的话,我宁愿不去延迟加载其他内容项的路线,或者使用二进制读取器和编写器创建我自己的自定义内容加载.
出于兴趣,我测试了for循环和while循环是否存在任何差异.是什么原因导致while循环在我的计算机(AMD Phenom II X6 1090T @ 3.20GHz)上比for循环长约2-2.5秒?他们不是在做同样的事情吗?你得到类似的结果吗?
此外,当我用x = null;循环语句替换循环语句时,while循环将明显更快.这里发生了什么?
当然,迭代次数非常多,但差异仍然非常显着?
static void Main(string[] args)
{
String x;
const Int64 FIVE_BN = 5000000000;
Int64 i = 0;
DateTime start = DateTime.Now;
for (; FIVE_BN > i; i++)
x = null; //Replace with only ; in both loops and the for loop is faster
Console.Out.WriteLine(FIVE_BN.ToString() + " times (for): " + (DateTime.Now - start));
i = 0;
start = DateTime.Now;
while(FIVE_BN > i++)
x = null; //Replace with only …Run Code Online (Sandbox Code Playgroud) 可能重复:(
类型)值和类型(值)之间有什么区别?
我主要是一个C#开发人员,因此使用以下语法进行大量显式转换:(type)variable以with (int)100.0004d为例.因此,在用C++编写代码时,我经常使用相同的语法.然而,我看到(甚至使用)在同样的铸造是使用语法实现其他情况下的代码type(variable)与int(100.0004)作为一个例子.
我很好奇这两种方法之间的区别是什么,以及使用一种方法是否有任何影响.
例:
double someDouble = 100.00456;
// Cast the double using the (type)variable syntax
int firstCastValue = (int)someDouble;
// Cast the double using the type(variable) syntax
int secondCastValue = int(someDouble);
Run Code Online (Sandbox Code Playgroud) 我想知道以下两个场景是否对本机C++代码具有相同的性能影响(如果有任何性能影响).
假设我有cpp_calc()一些正在做一些计算的函数,并用原生C++编写.还有,cs_show_gui_stuff()用C#编写.
现在,以下哪种情况会恶化本机c ++性能(如果有任何性能损失)?
创建一个.Net(C#)应用程序,它使用或将C++转换为COM DLL,在本机C++ dll 中运行cs_show_gui_stuff()和调用.cpp_calc()DllImport
创建一个在C++中实现的C++应用程序,cpp_calc()并cs_show_guid_stuff()通过将C#代码放在.Net COM DLL中来运行.
谢谢 :-)
我不清楚我怎么能用C++做到这一点.在Objective-C中,我可以用这种方式检查对象
if (myValue != [NSNull null]) { … }
Run Code Online (Sandbox Code Playgroud)
myValue与null对象(由类方法返回)进行比较,因此这很有效,如果object有一个值,即使是nil,if语句也会返回true.
所以问题是如何正确测试空指针值,我这样做了
if (myValue != NULL)
{
qDebug() << "It is not null";
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我有一个MVC3站点,我正在编写代码来注册用户.代码执行此操作:
MembershipCreateStatus createStatus;
Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus);
Run Code Online (Sandbox Code Playgroud)
它接下来要做的是:
HttpContext.Profile["FirstNAme"] = model.FirstName;
HttpContext.Profile["LastName"] = model.LastName;
Run Code Online (Sandbox Code Playgroud)
这是它失败的地方.我得到的错误是:
无法为匿名用户设置此属性.
我理解为什么; 这是因为没有用户登录或没有指定用户,所以当然我无法为用户设置配置文件.我正在从Pro ASP.NET MVC 3 Framework的第754页开始工作,这是我从中获取此代码的地方.我已经在web.config文件中设置了它.
<profile enabled="true" defaultProvider="AspNetSqlProfileProvider">
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
</providers>
<properties>
<add name="FirstName" type="String"/>
<add name="LastName" type="String"/>
</properties>
</profile>
Run Code Online (Sandbox Code Playgroud)
我的问题是如何设置我要注册的用户的名字和姓氏?
我foreach在C#中有以下循环:
foreach(var item in mod)
{
int i;
i = i + 1;
if (i % 2 == 0)
{
string y = "even number";
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我得到局部变量未分配的消息.我想在这里找到偶数.
我最近将一个项目从.NET 3.5移到了.NET 4.我使用的是C#,托管C++和非托管C++.
在我的一个托管C++(互操作)中,我有一个静态构造函数:
public ref class StaticPool : public BaseStaticPools
{
public:
static StaticPool()
{
InitializePools();
}
static Poolable^ Dequeue()
{
return (Poolable^)Dequeue(Poolable::typeid);
}
private:
static void InitializePools()
{
BaseStaticPools::CreatePool(Poolable::typeid);
}
};
Run Code Online (Sandbox Code Playgroud)
在.NET 3.5中曾经Dequeue()第一次调用它会触发静态初始化,它会运行静态构造函数.一旦我转移到.NET 4.0,从未调用静态构造函数.
我知道.NET 4.0中的静态初始化已经发生了变化,但根据我读到的所有内容,它应该可以正常工作.
我有这个代码:
struct nod
{
nod *vCap;
int vCost;
char vInfo;
};
list<nod*> vList;
for (int i = 9; i >= 0; i--)
{
nod *vTmp;
vTmp->vCost=i;
vTmp->vInfo='a';
vList.push_back(vTmp);
}
Run Code Online (Sandbox Code Playgroud)
如何按vCost值对列表进行排序?
如果表格中不存在某些内容,我正在努力解决问题.我告诉它,看看是否UserInfo包含信息user.
UserInfo Character = db.UserInfoes.SingleOrDefault(a => a.Username == user);
if (Character.Username == null || Character.Username.Length == 0)
{
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
但是我在if声明中得到了错误.
你调用的对象是空的.
c# ×7
c++ ×4
.net ×2
c++-cli ×1
casting ×1
if-statement ×1
native-code ×1
null ×1
objective-c ×1
performance ×1
visual-c++ ×1
xna ×1