嗨,我创建了这个功能,用于将游戏世界分成块.每个块大小为32块.此公式计算给定世界坐标的给定块编号的起始坐标.它运作良好,但我认为可以优化它,但我不知道.重要的是公式与负数一起使用.
static int wrld2chnk(int wrld)
{
if (wrld % 32 != 0)
{
if (wrld < 0)
wrld -= (32 + wrld % 32);
else
wrld -= wrld % 32;
}
return wrld;
}
Run Code Online (Sandbox Code Playgroud)
//这些是可用于验证结果的示例值.每个rpw中的第一个值是方法输入,第二个是输出:
(0, 0);
(31, 0);
(32, 32);
(33, 32);
(-1, -32);
(-31, -32);
(-32, -32);
(-33, -64);
(-34, -64);
(-64, -64);
(-70, -96);
Run Code Online (Sandbox Code Playgroud) Linux下的C库中是否有可以设置文件长度的函数?在Windows下我知道有一个SetFileLength()函数.如果没有,缩短文件而不删除和重写文件的最佳方法是什么?
如果我在xamlpadx(500%)中放大得足够大,我会看到边框内侧的线条.在我的应用程序中,这甚至发生在某些控件的正常缩放级别.
为什么这样,更重要的是,我能做些什么呢?
这是我的XAML代码:
<Border Background="#000000" BorderBrush="#000000" BorderThickness="4" CornerRadius="4">
<StackPanel>
</StackPanel>
</Border>
Run Code Online (Sandbox Code Playgroud)
我删除了所有内容,直到我确定有缺陷的显示中没有填充/边距/边框.
编辑2: 我不应该这么快就接受答案.我注意到在相同的情况下,错误与以前一样,尽管我使用了SnapsToDevicePixels并将控件的内部颜色设置为与边框相同的颜色.我希望微软能尽快解决这个问题!
XmlDocument doc = new XmlDocument();
doc.AppendChild(doc.CreateElement("Foo"));
doc.DocumentElement.InnerXml = "Test";
StringBuilder result = new StringBuilder();
doc.WriteContentTo(XmlWriter.Create(result));
Run Code Online (Sandbox Code Playgroud)
最后,结果是:
<Foo>Test
Run Code Online (Sandbox Code Playgroud)
这意味着缺少最终元素.为什么这样,我该如何解决?
long[] b = new long[1];
int i1 = b[0]; // compile error as it should
// no warning at all, large values gets converted to negative values silently
foreach (int i2 in b)
{
}
class Customer : Person{}
Person[]p = new Person[]{mypers};
// no warning at all, throws typecastexception at runtime
foreach (Customer c in p)
{
}
Run Code Online (Sandbox Code Playgroud)
我知道他们不能简单地修复它,因为它会破坏现有的程序.
但是为什么他们不在c#编译器中创建一个兼容性选项,我可以打开类型安全的foreach块生成,至少对于我确信它有效的新程序或程序?