How to send MFRC522 data to a C# app using a NodeMCU TCP server?
MFRC522::uid is a struct (see source code). There's no defined way to print it.  

If you want to write the raw bytes over the TCP connection, you can just use 

client.write((uint8_t*)mfrc522.uid.uidByte, mfrc522.uid.size);


If you want to write it as ASCII text, you can use the following:

void byte_to_str(char* buff, uint8_t val) {  // convert an 8-bit byte to a string of 2 hexadecimal characters
  buff[0] = nibble_to_hex(val &gt;&gt; 4);
  buff[1] = nibble_to_hex(val);
}

char nibble_to_hex(uint8_t nibble) {  // convert a 4-bit nibble to a hexadecimal character
  nibble &amp;= 0xF;
  return nibble &gt; 9 ? nibble - 10 + 'A' : nibble + '0';
}

void printHEX(Stream &amp;s, uint8_t *data, size_t length) {
  char *buffer = new char[length*2];
  for (size_t i = 0; i &lt; length; i++) {
    byte_to_str(&amp;buffer[i*2], data[i]);
  }
  s.write(buffer, length*2);
  delete[] buffer;
}


Then use it like this:

  printHEX(client, mfrc522.uid.uidByte, mfrc522.uid.size);


It loops over all bytes in the UID, converts them to ASCII (hexadecimal representation, so 2 characters per byte), and then writes the text over the TCP connection.

(Note that there are many other problems with your code as well, e.g. the includes are missing the opening '&lt;'.)