csharp 使用列表和代理

显示如何使用委托删除,修改和检查列表中的项目的简单示例。

<span style="color: #FF0000;">class</span> Program
<span style="color: #000000;">&#123;</span>
    <span style="color: #0600FF;">static</span> <span style="color: #0600FF;">void</span> Main<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> args<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>            
        <span style="color: #008080; font-style: italic;">//</span>
        <span style="color: #008080; font-style: italic;">// Example list </span>
        <span style="color: #008080; font-style: italic;">//</span>
        List&lt;Person&gt; Persons = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> List&lt;Person&gt;<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
        Persons.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> Person<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Jonas&quot;</span>, <span style="color: #FF0000;">22</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
        Persons.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> Person<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Peter&quot;</span>, <span style="color: #FF0000;">19</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
        Persons.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> Person<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Daniel&quot;</span>, <span style="color: #FF0000;">20</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
        Persons.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> Person<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Yvonne&quot;</span>, <span style="color: #FF0000;">18</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
        Persons.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> Person<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Jana&quot;</span>, <span style="color: #FF0000;">26</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
&nbsp;
        <span style="color: #008080; font-style: italic;">// Removes all persons younger than 20 years</span>
        Persons.<span style="color: #0000FF;">RemoveAll</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">delegate</span><span style="color: #000000;">&#40;</span>Person P<span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            <span style="color: #0600FF;">return</span> <span style="color: #000000;">&#40;</span>P.<span style="color: #0000FF;">Age</span> &lt; <span style="color: #FF0000;">20</span><span style="color: #000000;">&#41;</span>;
        <span style="color: #000000;">&#125;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
&nbsp;
        <span style="color: #008080; font-style: italic;">// Searches for specific entries and returns a list of</span>
        <span style="color: #008080; font-style: italic;">// them</span>
        List&lt;Person&gt; NewList = Persons.<span style="color: #0000FF;">FindAll</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">delegate</span><span style="color: #000000;">&#40;</span>Person P<span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            <span style="color: #0600FF;">return</span> <span style="color: #000000;">&#40;</span>P.<span style="color: #0000FF;">Age</span> &gt; <span style="color: #FF0000;">25</span><span style="color: #000000;">&#41;</span>;
        <span style="color: #000000;">&#125;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
        <span style="color: #008080; font-style: italic;">// Loops trough every item and modifies the</span>
        <span style="color: #008080; font-style: italic;">// entries</span>
        Persons.<span style="color: #0600FF;">ForEach</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">delegate</span><span style="color: #000000;">&#40;</span>Person P<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
            P.<span style="color: #0000FF;">Name</span> = <span style="color: #808080;">&quot;&lt;&quot;</span> + P.<span style="color: #0000FF;">Name</span> + <span style="color: #808080;">&quot;&gt;&quot;</span>;
        <span style="color: #000000;">&#125;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
        <span style="color: #008080; font-style: italic;">// Returns true or false if a specific entry is found</span>
        <span style="color: #FF0000;">bool</span> Contains = Persons.<span style="color: #0000FF;">Exists</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">delegate</span><span style="color: #000000;">&#40;</span>Person P<span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
            <span style="color: #0600FF;">return</span> <span style="color: #000000;">&#40;</span>P.<span style="color: #0000FF;">Age</span> &gt; <span style="color: #FF0000;">25</span><span style="color: #000000;">&#41;</span>;
        <span style="color: #000000;">&#125;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
&nbsp;
        <span style="color: #008080; font-style: italic;">// Print the new list</span>
        <span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>Person PersonObject <span style="color: #0600FF;">in</span> NewList<span style="color: #000000;">&#41;</span>
            Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span>PersonObject<span style="color: #000000;">&#41;</span>;
&nbsp;
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">// Example class</span>
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> Person
<span style="color: #000000;">&#123;</span>
    <span style="color: #0600FF;">private</span> <span style="color: #FF0000;">string</span> name = <span style="color: #808080;">&quot;&quot;</span>;
    <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">string</span> Name
    <span style="color: #000000;">&#123;</span>
        get <span style="color: #000000;">&#123;</span> <span style="color: #0600FF;">return</span> name;<span style="color: #000000;">&#125;</span>
        set <span style="color: #000000;">&#123;</span> name = value;<span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
&nbsp;
    <span style="color: #0600FF;">private</span> <span style="color: #FF0000;">int</span> age = <span style="color: #FF0000;">0</span>;
    <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">int</span> Age
    <span style="color: #000000;">&#123;</span>
        get <span style="color: #000000;">&#123;</span> <span style="color: #0600FF;">return</span> age; <span style="color: #000000;">&#125;</span>
        set <span style="color: #000000;">&#123;</span> age = value; <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>	
&nbsp;
    <span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
    <span style="color: #008080; font-style: italic;">/// Constructor</span>
    <span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
    <span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;Name&quot;&gt;&lt;/param&gt;</span>
    <span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;Age&quot;&gt;&lt;/param&gt;</span>
    <span style="color: #0600FF;">public</span> Person<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> Name, <span style="color: #FF0000;">int</span> Age<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
        <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">name</span>   = Name;
        <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">age</span>    = Age;
    <span style="color: #000000;">&#125;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
    <span style="color: #008080; font-style: italic;">/// Overrides the default ToString method with</span>
    <span style="color: #008080; font-style: italic;">/// a custom one</span>
    <span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
    <span style="color: #008080; font-style: italic;">/// &lt;returns&gt;&lt;/returns&gt;</span>
    <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #FF0000;">string</span> ToString<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
        <span style="color: #0600FF;">return</span> <span style="color: #FF0000;">String</span>.<span style="color: #0000FF;">Format</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;{0} ({1})&quot;</span>, <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Name</span>, <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Age</span><span style="color: #000000;">&#41;</span>;
    <span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #000000;">&#125;</span>

csharp 运行没有DOS框的控制台应用程序

该示例显示了如何在没有DOS框的情况下运行控制台应用程序。<br/> <br/>它还显示了如何检索控制台输出。

<span style="color: #008080; font-style: italic;">// This snippet needs the &quot;System.Diagnostics&quot;</span>
<span style="color: #008080; font-style: italic;">// library</span>
&nbsp;
<span style="color: #008080; font-style: italic;">// Application path and command line arguments</span>
<span style="color: #FF0000;">string</span> ApplicationPath = <span style="color: #808080;">&quot;C:<span style="color: #008080; font-weight: bold;">\\</span>example.exe&quot;</span>;
<span style="color: #FF0000;">string</span> ApplicationArguments = <span style="color: #808080;">&quot;-c -x&quot;</span>;
&nbsp;
<span style="color: #008080; font-style: italic;">// Create a new process object</span>
Process ProcessObj = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> Process<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
<span style="color: #008080; font-style: italic;">// StartInfo contains the startup information of</span>
<span style="color: #008080; font-style: italic;">// the new process</span>
ProcessObj.<span style="color: #0000FF;">StartInfo</span>.<span style="color: #0000FF;">FileName</span> = ApplicationPath;
ProcessObj.<span style="color: #0000FF;">StartInfo</span>.<span style="color: #0000FF;">Arguments</span> = ApplicationArguments;
&nbsp;
<span style="color: #008080; font-style: italic;">// These two optional flags ensure that no DOS window</span>
<span style="color: #008080; font-style: italic;">// appears</span>
ProcessObj.<span style="color: #0000FF;">StartInfo</span>.<span style="color: #0000FF;">UseShellExecute</span> = <span style="color: #0600FF;">false</span>;
ProcessObj.<span style="color: #0000FF;">StartInfo</span>.<span style="color: #0000FF;">CreateNoWindow</span> = <span style="color: #0600FF;">true</span>;
&nbsp;
<span style="color: #008080; font-style: italic;">// If this option is set the DOS window appears again :-/</span>
<span style="color: #008080; font-style: italic;">// ProcessObj.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">// This ensures that you get the output from the DOS application</span>
ProcessObj.<span style="color: #0000FF;">StartInfo</span>.<span style="color: #0000FF;">RedirectStandardOutput</span> = <span style="color: #0600FF;">true</span>;
&nbsp;
<span style="color: #008080; font-style: italic;">// Start the process</span>
ProcessObj.<span style="color: #0000FF;">Start</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
<span style="color: #008080; font-style: italic;">// Wait that the process exits</span>
ProcessObj.<span style="color: #0000FF;">WaitForExit</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
<span style="color: #008080; font-style: italic;">// Now read the output of the DOS application</span>
<span style="color: #FF0000;">string</span> Result = ProcessObj.<span style="color: #0000FF;">StandardOutput</span>.<span style="color: #0000FF;">ReadToEnd</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;

csharp 在实际控制之前捕捉击键

此示例显示了如何在转发到实际控件之前捕获键击<br/>。<br/> <br/>如果您想要执行自己的操作,这可能很有用,<br/>在实际操作之前控制得到他们。

<span style="color: #008080; font-style: italic;">// KeyDown event of some control</span>
<span style="color: #0600FF;">private</span> <span style="color: #0600FF;">void</span> SomeControl_KeyDown<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">object</span> sender, KeyEventArgs e<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #008080; font-style: italic;">// 1. Event is called directly after the key stroke</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">// If the user hits Enter, we catch the</span>
    <span style="color: #008080; font-style: italic;">// event and do our own things</span>
    <span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>e.<span style="color: #0000FF;">KeyCode</span> == Keys.<span style="color: #0000FF;">Enter</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
        <span style="color: #008080; font-style: italic;">// Suppress key stroke, so that</span>
        <span style="color: #008080; font-style: italic;">// the control don't receives it</span>
        e.<span style="color: #0000FF;">SuppressKeyPress</span> = <span style="color: #0600FF;">true</span>;
&nbsp;
        <span style="color: #008080; font-style: italic;">// Perform something important...</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">// KeyPress event of some control</span>
<span style="color: #0600FF;">private</span> <span style="color: #0600FF;">void</span> SomeControl_KeyPress<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">object</span> sender, KeyPressEventArgs e<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #008080; font-style: italic;">// 2. Event is called during the key stroke</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">// KeyUp event of some control</span>
<span style="color: #0600FF;">private</span> <span style="color: #0600FF;">void</span> SomeControl_KeyUp<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">object</span> sender, KeyEventArgs e<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #008080; font-style: italic;">// 3. Event is called after the key stroke  </span>
<span style="color: #000000;">&#125;</span>

csharp 测试一段时间是否重叠

显示如何测试两个给定时间段是否相互重叠。

<span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
<span style="color: #008080; font-style: italic;">/// Tests if two given periods overlap each other.</span>
<span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;BS&quot;&gt;Base period start&lt;/param&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;BE&quot;&gt;Base period end&lt;/param&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;TS&quot;&gt;Test period start&lt;/param&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;TE&quot;&gt;Test period end&lt;/param&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;returns&gt;</span>
<span style="color: #008080; font-style: italic;">/// 	&lt;c&gt;true&lt;/c&gt; if the periods overlap; otherwise, &lt;c&gt;false&lt;/c&gt;.</span>
<span style="color: #008080; font-style: italic;">/// &lt;/returns&gt;</span>
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">bool</span> TimePeriodOverlap<span style="color: #000000;">&#40;</span>DateTime BS, DateTime BE, DateTime TS, DateTime TE<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #008080; font-style: italic;">// More simple?</span>
    <span style="color: #008080; font-style: italic;">// return !((TS &lt; BS &amp;&amp; TE &lt; BS) || (TS &gt; BE &amp;&amp; TE &gt; BE));</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">// The version below, without comments </span>
    <span style="color: #008080; font-style: italic;">/*
    return (
        (TS &gt;= BS &amp;&amp; TS &lt; BE) || (TE &lt;= BE &amp;&amp; TE &gt; BS) || (TS &lt;= BS &amp;&amp; TE &gt;= BE)
    );
    */</span>
&nbsp;
    <span style="color: #0600FF;">return</span> <span style="color: #000000;">&#40;</span>
        <span style="color: #008080; font-style: italic;">// 1. Case:</span>
        <span style="color: #008080; font-style: italic;">//</span>
        <span style="color: #008080; font-style: italic;">//       TS-------TE</span>
        <span style="color: #008080; font-style: italic;">//    BS------BE </span>
        <span style="color: #008080; font-style: italic;">//</span>
        <span style="color: #008080; font-style: italic;">// TS is after BS but before BE</span>
        <span style="color: #000000;">&#40;</span>TS &gt;= BS &amp;&amp; TS &lt; BE<span style="color: #000000;">&#41;</span>
        || <span style="color: #008080; font-style: italic;">// or</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">// 2. Case</span>
        <span style="color: #008080; font-style: italic;">//</span>
        <span style="color: #008080; font-style: italic;">//    TS-------TE</span>
        <span style="color: #008080; font-style: italic;">//        BS---------BE</span>
        <span style="color: #008080; font-style: italic;">//</span>
        <span style="color: #008080; font-style: italic;">// TE is before BE but after BS</span>
        <span style="color: #000000;">&#40;</span>TE &lt;= BE &amp;&amp; TE &gt; BS<span style="color: #000000;">&#41;</span>
        || <span style="color: #008080; font-style: italic;">// or</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">// 3. Case</span>
        <span style="color: #008080; font-style: italic;">//</span>
        <span style="color: #008080; font-style: italic;">//  TS----------TE</span>
        <span style="color: #008080; font-style: italic;">//     BS----BE</span>
        <span style="color: #008080; font-style: italic;">//</span>
        <span style="color: #008080; font-style: italic;">// TS is before BS and TE is after BE</span>
        <span style="color: #000000;">&#40;</span>TS &lt;= BS &amp;&amp; TE &gt;= BE<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>

csharp 聚焦Windows窗体的控件

显示如何将控件聚焦在Windows窗体中。<br/> <br/>如果您正在使用Web窗体,这非常简单,<br/>您只需使用“WebControl.Focus()”但这不是<br/>适用于Windows Forms ...

<span style="color: #008080; font-style: italic;">// A example event:</span>
<span style="color: #0600FF;">private</span> <span style="color: #0600FF;">void</span> btnExampleCommand_Click<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">object</span> sender, EventArgs e<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">// That's all:</span>
    <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">ActiveControl</span> = <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">SomeControlObject</span>;
&nbsp;
    <span style="color: #008080; font-style: italic;">// This line focuses a control</span>
&nbsp;
<span style="color: #000000;">&#125;</span>

csharp 如何使用十六进制颜色

此示例显示如何将十六进制颜色转换为将HTML中使用的<br/>转换为.NET颜色对象,反之亦然。

<span style="color: #008080; font-style: italic;">// By using the ColorTranslator you can easily convert color values</span>
<span style="color: #008080; font-style: italic;">// definied in the hexadecimal format (like it is used in HTML)</span>
Color Color1 = <span style="color: #000000;">System</span>.<span style="color: #0000FF;">Drawing</span>.<span style="color: #0000FF;">ColorTranslator</span>.<span style="color: #0000FF;">FromHtml</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;#EEEEEE&quot;</span><span style="color: #000000;">&#41;</span>;
Color Color2 = <span style="color: #000000;">System</span>.<span style="color: #0000FF;">Drawing</span>.<span style="color: #0000FF;">ColorTranslator</span>.<span style="color: #0000FF;">FromHtml</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;red&quot;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
<span style="color: #008080; font-style: italic;">/*
** Convert back:
*/</span>
&nbsp;
<span style="color: #FF0000;">string</span> Color1a = <span style="color: #000000;">System</span>.<span style="color: #0000FF;">Drawing</span>.<span style="color: #0000FF;">ColorTranslator</span>.<span style="color: #0000FF;">ToHtml</span><span style="color: #000000;">&#40;</span>Color1<span style="color: #000000;">&#41;</span>;
<span style="color: #008080; font-style: italic;">// --&gt; &quot;#EEEEEE&quot;</span>
&nbsp;
<span style="color: #FF0000;">string</span> Color2a = <span style="color: #000000;">System</span>.<span style="color: #0000FF;">Drawing</span>.<span style="color: #0000FF;">ColorTranslator</span>.<span style="color: #0000FF;">ToHtml</span><span style="color: #000000;">&#40;</span>Color2<span style="color: #000000;">&#41;</span>;
<span style="color: #008080; font-style: italic;">// --&gt; &quot;Red&quot;</span>
&nbsp;
<span style="color: #FF0000;">string</span> Color2b = <span style="color: #FF0000;">String</span>.<span style="color: #0000FF;">Format</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;#{0:X2}{1:X2}{2:X2}&quot;</span>, Color2.<span style="color: #0000FF;">R</span>, Color2.<span style="color: #0000FF;">G</span>, Color2.<span style="color: #0000FF;">B</span><span style="color: #000000;">&#41;</span>;
<span style="color: #008080; font-style: italic;">// --&gt; &quot;#FF0000&quot;</span>

csharp 随机助手类

一个简单的类,提供经常需要的方法,如<br/>创建随机字符串,数字,颜色和布尔值。准备复制和粘贴:)

<span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
	<span style="color: #008080; font-style: italic;">/// Helper class for generating random values</span>
	<span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
	<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #FF0000;">class</span> RandomHelper
	<span style="color: #000000;">&#123;</span>
		<span style="color: #0600FF;">private</span> <span style="color: #0600FF;">static</span> Random randomSeed = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> Random<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
		<span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
		<span style="color: #008080; font-style: italic;">/// Generates a random string with the given length</span>
		<span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
		<span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;size&quot;&gt;Size of the string&lt;/param&gt;</span>
		<span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;lowerCase&quot;&gt;If true, generate lowercase string&lt;/param&gt;</span>
		<span style="color: #008080; font-style: italic;">/// &lt;returns&gt;Random string&lt;/returns&gt;</span>
		<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #FF0000;">string</span> RandomString<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> size, <span style="color: #FF0000;">bool</span> lowerCase<span style="color: #000000;">&#41;</span>
		<span style="color: #000000;">&#123;</span>
			<span style="color: #008080; font-style: italic;">// StringBuilder is faster than using strings (+=)</span>
			StringBuilder RandStr = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> StringBuilder<span style="color: #000000;">&#40;</span>size<span style="color: #000000;">&#41;</span>;
&nbsp;
			<span style="color: #008080; font-style: italic;">// Ascii start position (65 = A / 97 = a)</span>
			<span style="color: #FF0000;">int</span> Start = <span style="color: #000000;">&#40;</span>lowerCase<span style="color: #000000;">&#41;</span> ? <span style="color: #FF0000;">97</span> : <span style="color: #FF0000;">65</span>;
&nbsp;
			<span style="color: #008080; font-style: italic;">// Add random chars</span>
			<span style="color: #0600FF;">for</span> <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> i = <span style="color: #FF0000;">0</span>; i &lt; size; i++<span style="color: #000000;">&#41;</span>
				RandStr.<span style="color: #0000FF;">Append</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">char</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">26</span> * randomSeed.<span style="color: #0000FF;">NextDouble</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> + Start<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
			<span style="color: #0600FF;">return</span> RandStr.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
		<span style="color: #008080; font-style: italic;">/// Returns a random number.</span>
		<span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
		<span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;min&quot;&gt;Minimal result&lt;/param&gt;</span>
		<span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;max&quot;&gt;Maximal result&lt;/param&gt;</span>
		<span style="color: #008080; font-style: italic;">/// &lt;returns&gt;Random number&lt;/returns&gt;</span>
		<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #FF0000;">int</span> RandomNumber<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> Minimal, <span style="color: #FF0000;">int</span> Maximal<span style="color: #000000;">&#41;</span>
		<span style="color: #000000;">&#123;</span>
			<span style="color: #0600FF;">return</span> randomSeed.<span style="color: #0000FF;">Next</span><span style="color: #000000;">&#40;</span>Minimal, Maximal<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
		<span style="color: #008080; font-style: italic;">/// Returns a random boolean value</span>
		<span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
		<span style="color: #008080; font-style: italic;">/// &lt;returns&gt;Random boolean value&lt;/returns&gt;</span>
		<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #FF0000;">bool</span> RandomBool<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
		<span style="color: #000000;">&#123;</span>
			<span style="color: #0600FF;">return</span> <span style="color: #000000;">&#40;</span>randomSeed.<span style="color: #0000FF;">NextDouble</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> &gt; <span style="color: #FF0000;">0.5</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
		<span style="color: #008080; font-style: italic;">/// Returns a random color</span>
		<span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
		<span style="color: #008080; font-style: italic;">/// &lt;returns&gt;&lt;/returns&gt;</span>
		<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #000000;">System</span>.<span style="color: #0000FF;">Drawing</span>.<span style="color: #0000FF;">Color</span> RandomColor<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
		<span style="color: #000000;">&#123;</span>
			<span style="color: #0600FF;">return</span> <span style="color: #000000;">System</span>.<span style="color: #0000FF;">Drawing</span>.<span style="color: #0000FF;">Color</span>.<span style="color: #0000FF;">FromArgb</span><span style="color: #000000;">&#40;</span>
				randomSeed.<span style="color: #0000FF;">Next</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">256</span><span style="color: #000000;">&#41;</span>, 
				randomSeed.<span style="color: #0000FF;">Next</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">256</span><span style="color: #000000;">&#41;</span>, 
				randomSeed.<span style="color: #0000FF;">Next</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">256</span><span style="color: #000000;">&#41;</span>
			<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #000000;">&#125;</span>

csharp 下个月更高的月份

此片段描述了如何在给定的日期时间之后找到下一个X天。<br/> <br/>这可能非常有用,例如,如果您想在接下来的第15天左右找到<br/>具体日期。

<span style="color: #008080; font-style: italic;">/// &lt;summary&gt;</span>
<span style="color: #008080; font-style: italic;">/// Returns the next month day after the given DateTime.</span>
<span style="color: #008080; font-style: italic;">/// &lt;/summary&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;T&quot;&gt;Source DateTime&lt;/param&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;param name=&quot;D&quot;&gt;Target month day&lt;/param&gt;</span>
<span style="color: #008080; font-style: italic;">/// &lt;returns&gt;DateTime&lt;/returns&gt;</span>
<span style="color: #0600FF;">public</span> DateTime NextHigherMonthDay<span style="color: #000000;">&#40;</span>DateTime T, <span style="color: #FF0000;">int</span> D<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #0600FF;">return</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>T.<span style="color: #0000FF;">Day</span> &gt;= D<span style="color: #000000;">&#41;</span> ? T.<span style="color: #0000FF;">AddMonths</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span> : T<span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">AddDays</span><span style="color: #000000;">&#40;</span>D-T.<span style="color: #0000FF;">Day</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">// With a minor change, you can create related functions like</span>
<span style="color: #008080; font-style: italic;">// the one below. I just changed the &quot;&gt;=&quot; to &quot;&gt;&quot; ...</span>
<span style="color: #0600FF;">public</span> DateTime NextHigherOrEqualMonthDay<span style="color: #000000;">&#40;</span>DateTime T, <span style="color: #FF0000;">int</span> D<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #0600FF;">return</span> <span style="color: #000000;">&#40;</span><span style="color: #000000;">&#40;</span>T.<span style="color: #0000FF;">Day</span> &gt; D<span style="color: #000000;">&#41;</span> ? T.<span style="color: #0000FF;">AddMonths</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span> : T<span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">AddDays</span><span style="color: #000000;">&#40;</span>D - T.<span style="color: #0000FF;">Day</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>

csharp 通过IP地址获取主机

显示如何从给定的IP地址检索主机名。

<span style="color: #FF0000;">string</span> IPAdress = <span style="color: #808080;">&quot;127.0.0.1&quot;</span>;
&nbsp;
IPHostEntry IPHostEntryObject = Dns.<span style="color: #0000FF;">GetHostEntry</span><span style="color: #000000;">&#40;</span>IPAdress<span style="color: #000000;">&#41;</span>;
&nbsp;
Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span>IPHostEntryObject.<span style="color: #0000FF;">HostName</span><span style="color: #000000;">&#41;</span>;

csharp ScriptableObject Manager

ScriptableObjectManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

#region Checks type, creates SO instance, adds to visible list on SOManager
public class CheckClass <T>
{

  T item;
  static string ObjectName;


  private void TypeStatus(string ClassName)
  {
   
    
    ObjectName = this.GetType().ToString();
    
    
    if (ObjectName == "CheckClass`1[" + ClassName + "]")
      {
   
        //  Debug.Log("Generic Class check is true");
      }

  }

  public ScriptableObject CreateScriptableObject(string ObjectName)
  {
  
    List<ScriptableObject> ScriptableObjectList = ScriptableObjectManager.ScriptableObjectList;
    ScriptableObject ObjectTest = AssetDatabase.LoadAssetAtPath<ScriptableObject>("Assets/ScriptableObjectsScene7/" + ObjectName + ".asset");
    if (ObjectTest == null)
      {
        ObjectTest = ScriptableObject.CreateInstance(ObjectName);

        ScriptableObjectList.Add(ObjectTest);
        AssetDatabase.CreateAsset(ObjectTest, AssetDatabase.GenerateUniqueAssetPath("Assets/ScriptableObjectsScene7/" + ObjectName + ".asset"));
        //  Debug.Log("No Info found, new one created");

      } else
      {
        ScriptableObject newObject = ScriptableObjectList.Find(x => x.name == ObjectName);

        if (newObject == null)
          {
            ScriptableObjectList.Add(ObjectTest);
            // Debug.Log("newObject == null");
          } else
          {
            //  Debug.Log("Found Object in list");
          }
        // Debug.Log(ScriptableObjectList.Count);
        //   Debug.Log(ObjectName + " has been found");
      }
    return ObjectTest;
  }

}
#endregion

public class ScriptableObjectManager : MonoBehaviour
{
  public static ScriptableObjectManager _instance;

  public  TopScrollInfoText TopScrollInfoText;
  static TopScrollInfoText _topScrollInfoText;

  //public  ScriptableObject Test7;
  //static ScriptableObject _test7;

 
  public  static List<ScriptableObject> ScriptableObjectList = new List<ScriptableObject>();

  void Awake()
  {
    if (_instance == null)
      _instance = this;
    else
      {
        Destroy(_instance);
      }
  }

  public void SetPublicObjects()
  {
    TopScrollInfoText = _topScrollInfoText;
    //   Test7 = _test7;


  }


  [MenuItem("Scene7/Set Scene 7 Objects")]
  public static void SetObjects()
  {
    _topScrollInfoText = CreateScriptableObject<TopScrollInfoText>("TopScrollInfoText") as TopScrollInfoText;
    //   _test7 = CreateScriptableObject<Test7>("Test7");

     
    
  }

  public static ScriptableObject CreateScriptableObject<T>(string NameOfClass)
  {
    CheckClass<T> currentObject = new CheckClass<T>();
    ScriptableObject scripObj = currentObject.CreateScriptableObject(NameOfClass);
    return scripObj;
  }

  [ContextMenu("Update")]
  void UpdateList()
  {
    /*
    foreach (var item in ScriptableObjectList)
      {
        Debug.Log("Static list count = " + ScriptableObjectList.Count.ToString());
       
        ScriptableObject thisObject = ScriptableObjectList.Find(x => x.name == item.name);
        if (!thisObject)
          {
            Debug.Log("Adding to new list");
            ScriptableObjectList.Add(item);
          } else
          {
            Debug.Log("Found Duplicate Object");
          }
      }
      */
    SetPublicObjects();
  }
}