我有一个ArrayList包含以下字段的对象的C#.我有大约10个物体ArrayList.我的问题是我需要ArrayList根据StartDate系统中可用的DateTime变量对其进行排序.
public int id { get; set; }
public string title {get; set;}
public bool allDay { get; set; }
public string start { get; set; }
public string end { get; set; }
public string color { get; set; }
public DateTime startDate { get; set; }
public DateTime endDate { get; set; }
public string Location { get; set; }
public string StartDatestr { get; set; }
public string EndDatestr …Run Code Online (Sandbox Code Playgroud) 从这个页面,我读到:
如果应用程序使用自定义控件并在 ResourceDictionary(或 XAML 资源节点)中定义资源,建议您在应用程序或窗口对象级别定义资源,或者在自定义控件的默认主题中定义资源。在自定义控件的 ResourceDictionary 中定义资源会对该控件的每个实例产生性能影响。
好的...现在,我有一个定义以下资源的 UserControl:
<UserControl ...>
<UserControl.Resources>
<Namespace:ImagesConverter x:Key="ImagesConverter" ...
<Storyboard x:Key="AnimationHide" ...
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)
因此,由于我在运行时创建不少于 100 个实例,正如 MSDN 教程所述,最好将这些资源移动到主窗口或应用程序级别。将它们转移到哪里是最佳位置?主窗口级别、应用程序级别还是资源文件?为什么?
然后...我如何从新位置使用它们?假设我的 UserControl 中有以下代码:
m_AnimationHide = (Storyboard)Resources["AnimationHide"];
Run Code Online (Sandbox Code Playgroud)
我应该如何修改它以反映这些更改?我应该如何修改以下 UserControl XAML 片段?
Source="{Binding Source={x:Static Properties:Resources.MyImage}, Converter={StaticResource ImagesConverter}}"
Run Code Online (Sandbox Code Playgroud) 我在这里找到了一段很好的代码,它使用API调用执行ASM指令,以获取CPU的序列号:
using System;
using System.Text;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
[DllImport("user32", EntryPoint = "CallWindowProcW", CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)] private static extern IntPtr ExecuteNativeCode([In] byte[] bytes, IntPtr hWnd, int msg, [In, Out] byte[] wParam, IntPtr lParam);
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("kernel32", CharSet = CharSet.Unicode, SetLastError = true)] public static extern bool VirtualProtect([In] byte[] bytes, IntPtr size, int newProtect, out int oldProtect);
const int PAGE_EXECUTE_READWRITE = 0x40;
static void Main(string[] args)
{ …Run Code Online (Sandbox Code Playgroud) 我意识到这个应用程序的一个小C#移植允许从内存/流加载库,而不是使用通过文件系统工作的LoadLibrary API函数.用指针和匹配结果弄乱了一点......最后我有一些按预期工作的东西.我唯一的问题是对DLLMain的调用总是失败(我尝试使用Kernel32.dll和User32.dll).我无法理解为什么,我不知道如何调试问题.
这是我的项目(一个简单的32位控制台应用程序)的主要功能,它读取库,将其分配到内存并手动加载:
public static UInt32 Load(String libraryName)
{
if (libraries.ContainsKey(libraryName))
return libraries[libraryName];
String libraryPath = Path.Combine(Environment.SystemDirectory, libraryName);
Byte[] libraryBytes = File.ReadAllBytes(libraryPath);
fixed (Byte* libraryPointer = libraryBytes)
{
HeaderDOS* headerDOS = (HeaderDOS*)libraryPointer;
if ((UInt16)((headerDOS->Magic << 8) | (headerDOS->Magic >> 8)) != IMAGE_DOS_SIGNATURE)
return 0;
HeadersNT* headerNT = (HeadersNT*)(libraryPointer + headerDOS->LFANEW);
UInt32 addressLibrary = VirtualAlloc(headerNT->OptionalHeader.ImageBase, headerNT->OptionalHeader.SizeOfImage, AllocationType.RESERVE, MemoryProtection.READWRITE);
if (addressLibrary == 0)
addressLibrary = VirtualAlloc(0, headerNT->OptionalHeader.SizeOfImage, AllocationType.RESERVE, MemoryProtection.READWRITE);
if (addressLibrary == 0)
return 0;
Library* library = (Library*)Marshal.AllocHGlobal(sizeof(Library));
library->Address …Run Code Online (Sandbox Code Playgroud) 使用.htaccess,我将PHP处理程序设置为我的所有.css和js,以便输出基于用户代理的代码:
AddHandler application/x-httpd-php .css .js
Run Code Online (Sandbox Code Playgroud)
例如:
<?PHP if ($CurrentBrowser == 'msie') { ?>
.bind('selectstart', function(event) { ... })
<?PHP } ?>
Run Code Online (Sandbox Code Playgroud)
所以,事实上,我的代码文件是动态创建的,但可以被认为是静态文件.这是因为,一旦他们第一次编译,浏览器就可以从缓存中取回它们并重复使用它们直到我更改它们的内容.这就是我使用指纹识别/版本控制和长时间过期的原因:
[INDEX.PHP]
<script type="application/javascript" src="<?PHP echo GetVersionedFile('/script.js'); ?>"></script>
<script type="application/javascript" src="/script.1316108341.js"></script>
[.HTACCESS]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule "^(.+)\.(\d+)\.(css|js)$" $1.$3 [L]
Run Code Online (Sandbox Code Playgroud)
问题是这些文件,即使我用适当的标头发送它们,也不会被任何浏览器缓存(我从来没有得到304代码,总是200).这是我的服务器响应的日志:
[CHROME]
Request URL:http://127.0.0.1:8888/script.1316108341.js
Request Method:GET
Status Code:200 OK
-----
Cache-Control:max-age=31536000, public
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:6150
Content-Type:application/javascript
Date:Thu, 15 Sep 2011 21:41:25 GMT
Expires:Fri, 14 Sep 2012 21:41:25 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.2.17 (Win32) PHP/5.3.6
Vary:Accept-Encoding
X-Powered-By:PHP/5.3.6
[MOZILLA]
Request …Run Code Online (Sandbox Code Playgroud) 好的,这是我的基本网站结构:
<body>
<div id="wrapper">
<header><a href="/"> </a></header>
<nav>
<ul>
<li><a href="...">...</a></li>
<li><a href="...">...</a></li>
<li><a href="...">...</a></li>
</ul>
</nav>
<div id="content"></div>
<footer><a href="/"> </a></footer>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
这是我的CSS基础知识:
html
{
font-size: 100%;
height: 100%;
line-height: 1.4;
overflow-y: scroll;
}
body
{
background: #EEE url("../images/background.png") repeat-y center center fixed;
color: #333;
height: 100%;
font: 1em 'Lato-Regular';
margin: 0;
padding: 0;
}
#wrapper
{
height: 100%;
margin: 0 auto;
width: 960px;
}
#content
{
min-height: 460px;
height: auto !important;
height: 460px;
margin: 20px 0;
} …Run Code Online (Sandbox Code Playgroud) 这是我的代码,用于检查右边的给定数字是否为第三位7.但在接受输入后,程序自行关闭.请帮忙告诉我,我做错了什么.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter a number: ");
int y = Convert.ToInt32(Console.ReadLine());
int[] u = new int[3];
for (int j=0; j < 3; j++)
{
u[j] = y % 10;
y = y / 10;
}
if (u[2] == 7)
{
Console.WriteLine("yuss");
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 今天我写了一小段代码,在调试时,VS打了我一眼,告诉我我的局部变量名称犯了一个大错:"在这个范围内已经定义了一个名为'i'的局部变量".
MyEnum enumerator = MyEnum.B;
switch (enumerator)
{
case MyEnum.A:
Int32 i = 0;
// DoStuffsA();
break;
case MyEnum.B:
Double i = 0D;
// DoStuffsB();
break;
}
Run Code Online (Sandbox Code Playgroud)
所以我说"好吧VS,让我稍后解决它,我想首先考虑我的情况,因为我更喜欢它们!".所以我做了我的化妆品改变......但是突然VS停止抱怨这个错误:
MyEnum enumerator = MyEnum.B;
switch (enumerator)
{
case MyEnum.A:
{
Int32 i = 0;
// DoStuffsA();
break;
}
case MyEnum.B:
{
Double i = 0D;
// DoStuffsB();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
好的...我知道"范围"的含义,我知道我生产了两个不同的范围.问题是我不知道如何将switch语句转换为IL代码,并且我一直认为所有case语句都放在switch范围内,无论是否使用花括号.所以...可以编译以下奇怪,对吧?
MyEnum enumerator = MyEnum.B;
switch (enumerator)
{
case MyEnum.A:
String s = "Hello!";
Console.WriteLine(s);
break;
case MyEnum.B: …Run Code Online (Sandbox Code Playgroud)