C#学习笔记-Vincent

IO操作输出csv文件

csv对应excel文件

using System.IO;

StreamWriter sw = new StreamWriter(@"H:\UnityProject\jieKou2.2\web\test.csv");

  sw.WriteLine("{0},{1}", movePoint.X, movePoint.Y);
  sw.Flush();
  sw.Close();

log4net写日志

step0:引用log4net包
直接在nuget找到log4net包。不能加载出来的话,直接去nuget官网搜索包log4net,下载package文件。放到本地库(自己新建一个文件夹存放)。然后工具,选项,nuget 管理。
在这里插入图片描述

  • 接下来:工具:NuGet工具包管理器,选择并安装之前下载的包
  • 在这里插入图片描述
    安装成功后:
    在这里插入图片描述

step1: 在AssemblyInfo.cs中添加配置文件跟log4net的实例化函数config绑定。

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)] //绑定配置文件

在这里插入图片描述
step2:
配置文件名称:log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <!--错误日志类-->
    <logger name="logerror">
      <!--日志类的名字-->
      <level value="ALL" />
      <!--定义记录的日志级别-->
      <appender-ref ref="ErrorAppender" />
      <!--记录到哪个介质中去-->
    </logger>
    <!--信息日志类-->
    <logger name="loginfo">
      <level value="ALL" />
      <appender-ref ref="InfoAppender" />
    </logger>
    <!--错误日志附加介质-->
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
      <!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
      <param name="File" value="Log\\LogError\\" />
      <!--日志输出到exe程序这个相对目录下-->
      <param name="AppendToFile" value="true" />
      <!--输出的日志不会覆盖以前的信息-->
      <param name="MaxSizeRollBackups" value="100" />
      <!--备份文件的个数-->
      <param name="MaxFileSize" value="10240" />
      <!--当个日志文件的最大大小-->
      <param name="StaticLogFileName" value="false" />
      <!--是否使用静态文件名-->
      <param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />
      <!--日志文件名-->
      <param name="RollingStyle" value="Date" />
      <!--文件创建的方式,这里是以Date方式创建-->
      <!--错误日志布局-->
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;"  />
      </layout>
    </appender>
    <!--信息日志附加介质-->
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\LogInfo\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />
      <param name="RollingStyle" value="Date" />
      <!--信息日志布局-->
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="&lt;HR COLOR=blue&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;"  />
      </layout>
    </appender>
  </log4net>
 
</configuration>

step3:更改配置文件属性
在这里插入图片描述

step4:
自己封装一个LogHelper控制类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 草稿
{
    public class LogHelper
    {
        public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
        public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
        public static void WriteLog(string info)
        {
            if (loginfo.IsInfoEnabled)
            {
                loginfo.Info(info);
            }
        }

        public static void WriteLog(string info, Exception ex)
        {
            if (logerror.IsErrorEnabled)
            {
                logerror.Error(info, ex);
            }
        }
    }
}

step5:使用

 			LogHelper.WriteLog("vincent test info");   //简单使用
 		
 		//抛异常
 			try
            {
                string a = "FF";
                int b = Convert.ToInt32(a);

				
            }
            catch (Exception ex){
                LogHelper.WriteLog(ex.Message.ToString(), ex);
            }

使用Newtonsoft.Json库解析json串

  1. 添加引用:程序集:Newtonsoft.Json
  2. using Newtonsoft.Json;
  3. 代码

            BookInfo book1 = new BookInfo()
            {
                BookId = 1,
                Category = "CHILDREN",
                Title = "Harry Potter",
                Author = "J K. Rowling",
                PublishDate = new DateTime(2005, 08, 15),
                Price = 29.99
            };
            string bookListJson = JsonConvert.SerializeObject(book1);  //把对象转为json



            BookInfo  book2 = JsonConvert.DeserializeObject<BookInfo>(bookListJson);  //把json串解析为对象

代理,绑定事件,绑定函数

public delegate void EventHandler(object sender, EventArgs e);
public event EventHandler Activated;

Activated += new EventHandler(app_Activated);

代理:

1.代理 相当于 一个函数指针,等于存放了一种相同参数函数的指针。

//public delegate void DeathDelegate();

delegate void DelegateExample(int a);
start()
{
	DelegateExample myDelegate=Bar;
	myDelegate(777);    //这样就执行了Bar函数
}


Bar(int a)
{

}


2.代理作为参数



delegate void DelegateExample(int a);
void start()
{
	Foobar(Bar);
}

void Foobar(DelegateExample myDelegate2)
{
	myDelegate2(50);//这样  也执行了 Bar 函数
}
Bar(int a)
{

}


导入三方控件

step1:安装exe文件,
step2:工具->选择工具箱项->com组件->
选择之后控件出现在工具箱中
在这里插入图片描述
在这里插入图片描述

若 Form1 中的函数,需要再form2中调用
Step1
再form1 中声明 要被调用的函数:
void f_ChangeColor(bool topmost)
{
this.BackColor = Color.LightBlue;
//this.Text = “改变成功”;
}

Step2
在form1 中创建form2的时候,绑定函数
Form2 f = new Form2();
f.ChangeColor += new Form2.ChangeFormColor(f_ ChangeColor);
f.Show();

其中的ChangeFormColor 会代替原来的f_ ChangeColor函数。

Step3
在form2中。
public delegate void ChangeFormColor(bool topmost);
public event ChangeFormColor ChangeColor; // ChangeColor===form1中的void f_ChangeColor(bool topmost)

设置代理 和事件。

Step4:
Form2中调用函数 等价于调用form1中的函数。
ChangeColor(true);//执行委托实例

加载服务器图片
pictureUrl = mRobotListRequestClass.data.icon;
System.Net.WebRequest webreq = System.Net.WebRequest.Create(pictureUrl);
System.Net.WebResponse webres = webreq.GetResponse();
using (System.IO.Stream stream = webres.GetResponseStream())
{
this.pictureBox1.Image = Image.FromStream(stream);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值